TOP

Instrucțiunea SQL UNION

YouLibreCalc for Excel logo

SQL UNION Descriere

Operatorul UNION este utilizat pentru a combina setul de rezultate din două sau mai multe instrucțiuni SELECT.

  • Fiecare instrucțiune SELECT din UNION trebuie să aibă același număr de coloane
  • De asemenea, coloanele trebuie să aibă tipuri de date similare
  • De asemenea, coloanele din fiecare instrucțiune SELECT trebuie să fie în aceeași ordine

  • UNION Sintaxă

    SELECT column_name(s) FROM table1
    UNION
    SELECT column_name(s) FROM table2
    

    UNION ALL Sintaxă

    Operatorul UNION selectează implicit numai valori distincte. Pentru a permite valori duplicate, utilizați UNION ALL:

    SELECT column_name(s) FROM table1
    UNION ALL
    SELECT column_name(s) FROM table2
    
    Numele coloanelor din setul de rezultate se potrivesc de obicei cu numele coloanelor din prima instrucțiune SELECT.

    Baza de date demonstrativă

    În acest tutorial vom folosi celebrul exemplu de bază de date „Northwind”.

    Mai jos este o mostră din tabelul „Customers” („Clienți”):

    CustomerIDCustomerNameContactNameAddressCityPostalCodeCountry
    1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
    2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.5021Mexico
    3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.5023Mexico
    4Around the HornThomas Hardy120 Hanover Sq.LondonWA1 1DPUK
    5Berglunds snabbköpChristina BerglundBerguvsvägen 8LuleåS-958 22Sweden

    Și eșantionul din tabelul „Suppliers” („Furnizori”):

    SupplierIDSupplierNameContactNameAddressCityPostalCodeCountryPhone
    1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonaEC1 4SDUK(171) 555-2222
    2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA(100) 555-4822
    3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA(313) 555-5735
    4Tokyo TradersYoshi Nagase9-8 Sekimai Musashino-shiTokyo100Japan(03) 3555-5011
    5Cooperativa de Quesos 'Las Cabras'Antonio del Valle SaavedraCalle del Rosal 4Oviedo33007Spain(98) 598 76 54

    SQL UNION Exemplu

    Următoarea instrucțiune SQL selectează orașe (numai valori diferite) din tabelele Clienți și Furnizori:

    Run SQLSELECT City FROM Customers 
    UNION 
    SELECT City FROM Suppliers 
    ORDER BY City
    
    Dacă unii clienți sau furnizori au același oraș (City), fiecare oraș va fi specificat o singură dată deoarece UNION selectează doar valori diferite. Folosiți UNION ALL pentru a selecta și valori duplicate!

    SQL UNION ALL Exemplu

    Următoarea instrucțiune SQL selectează orașe (de asemenea, valori duplicate) din ambele tabele Clienți și Furnizori:

    Run SQLSELECT City FROM Customers 
    UNION ALL 
    SELECT City FROM Suppliers 
    ORDER BY City
    

    SQL UNION împreună cu WHERE

    Următoarea instrucțiune SQL selectează orașele germane (numai cu valori diferite) din ambele tabele Clienți și Furnizori:

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    SQL UNION ALL împreună cu WHERE

    Următoarea instrucțiune SQL selectează orașele germane (de asemenea, valori duplicate) din ambele tabele Clienți și Furnizori:

    Run SQLSELECT City, Country FROM Customers 
    WHERE Country = 'Germany' 
    UNION ALL 
    SELECT City, Country FROM Suppliers 
    WHERE Country = 'Germany' 
    ORDER BY City
    

    Un alt exemplu SQL UNION

    Următoarea instrucțiune SQL listează toți clienții și furnizorii:

    Run SQLSELECT 'Customer' AS Type, ContactName, City, Country 
    FROM Customers 
    UNION 
    SELECT 'Supplier', ContactName, City, Country 
    FROM Suppliers
    

    Rețineți că „AS Type” de mai sus este un alias. Aliasurile SQL sunt folosite pentru a da unui tabel sau coloană un nume temporar. Aliasul există doar pe durata solicitării. Deci, aici am creat o coloană temporară numită „Type” care indică dacă persoana de contact este „Client” sau „Vânzător”.